/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.tramite.be;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.cip.esymons.general.be.Distrito;
import org.cip.esymons.general.be.Solicitante;
import org.cip.esymons.tesoreria.be.TipoMoneda;

/**
 *
 * @author Cristian
 */
@Entity
@Table(name = "tra_certificado")
@NamedQueries({@NamedQuery(name = "Certificado.findAll", query = "SELECT c FROM Certificado c"), @NamedQuery(name = "Certificado.findByCodCertificado", query = "SELECT c FROM Certificado c WHERE c.codCertificado = :codCertificado"), @NamedQuery(name = "Certificado.findByChaFechvigencia", query = "SELECT c FROM Certificado c WHERE c.chaFechvigencia = :chaFechvigencia"), @NamedQuery(name = "Certificado.findByChaFechemision", query = "SELECT c FROM Certificado c WHERE c.chaFechemision = :chaFechemision"), @NamedQuery(name = "Certificado.findByChaDireccion", query = "SELECT c FROM Certificado c WHERE c.chaDireccion = :chaDireccion"), @NamedQuery(name = "Certificado.findByChaEstado", query = "SELECT c FROM Certificado c WHERE c.chaEstado = :chaEstado"), @NamedQuery(name = "Certificado.findByChaProyecto", query = "SELECT c FROM Certificado c WHERE c.chaProyecto = :chaProyecto"), @NamedQuery(name = "Certificado.findByChaCostoobra", query = "SELECT c FROM Certificado c WHERE c.chaCostoobra = :chaCostoobra"), @NamedQuery(name = "Certificado.findByChaReferubi", query = "SELECT c FROM Certificado c WHERE c.chaReferubi = :chaReferubi"), @NamedQuery(name = "Certificado.findByChaMetraje", query = "SELECT c FROM Certificado c WHERE c.chaMetraje = :chaMetraje"), @NamedQuery(name = "Certificado.findByChaNumero", query = "SELECT c FROM Certificado c WHERE c.chaNumero = :chaNumero"), @NamedQuery(name = "Certificado.findByChaLpcppad", query = "SELECT c FROM Certificado c WHERE c.chaLpcppad = :chaLpcppad"), @NamedQuery(name = "Certificado.findByPropietario", query = "SELECT c FROM Certificado c WHERE c.propietario = :propietario"), @NamedQuery(name = "Certificado.findByCostchfcop", query = "SELECT c FROM Certificado c WHERE c.costchfcop = :costchfcop"), @NamedQuery(name = "Certificado.findByChaUrbanizacion", query = "SELECT c FROM Certificado c WHERE c.chaUrbanizacion = :chaUrbanizacion")})
public class Certificado implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "cod_certificado")
    private Long codCertificado;
    @Basic(optional = false)
    @Column(name = "cha_fechvigencia")
    @Temporal(TemporalType.DATE)
    private Date chaFechvigencia;
    @Basic(optional = false)
    @Column(name = "cha_fechemision")
    @Temporal(TemporalType.DATE)
    private Date chaFechemision;
    @Column(name = "cha_direccion")
    private String chaDireccion;
    @Basic(optional = false)
    @Column(name = "cha_estado")
    private EnumEstadoCert chaEstado;
    @Column(name = "cha_proyecto")
    private String chaProyecto;
    @Column(name = "cha_costoobra")
    private BigDecimal chaCostoobra;
    @Column(name = "cha_referubi")
    private String chaReferubi;
    @Column(name = "cha_metraje")
    private Integer chaMetraje;
    @Basic(optional = false)
    @Column(name = "cha_numero")
    private long chaNumero;
    @Column(name = "cha_lpcppad")
    private String chaLpcppad;
    @Column(name = "propietario")
    private String propietario;
    @Column(name = "costchfcop")
    private String costchfcop;
    @Column(name = "cha_urbanizacion")
    private String chaUrbanizacion;
    @JoinColumn(name = "cod_certificado", referencedColumnName = "doc_codigo", insertable = false, updatable = false)
    @OneToOne(optional = false, fetch = FetchType.LAZY)
    private DocumentoGenerado documentoGenerado;
    @JoinColumn(name = "cod_propietario", referencedColumnName = "sol_codigo")
    @ManyToOne(fetch = FetchType.LAZY)
    private Solicitante codPropietario;
    @JoinColumn(name = "cod_distrito", referencedColumnName = "dis_codigo")
    @ManyToOne(fetch = FetchType.LAZY)
    private Distrito codDistrito;
    @JoinColumn(name = "fk_tmo_codigo", referencedColumnName = "tmo_codigo")
    @ManyToOne(fetch = FetchType.LAZY)
    private TipoMoneda fkTmoCodigo;

    public Certificado() {
    }

    public Certificado(Long codCertificado) {
        this.codCertificado = codCertificado;
    }

    public Certificado(Long codCertificado, Date chaFechvigencia, Date chaFechemision, EnumEstadoCert chaEstado, long chaNumero) {
        this.codCertificado = codCertificado;
        this.chaFechvigencia = chaFechvigencia;
        this.chaFechemision = chaFechemision;
        this.chaEstado = chaEstado;
        this.chaNumero = chaNumero;
    }

    public Long getCodCertificado() {
        return codCertificado;
    }

    public void setCodCertificado(Long codCertificado) {
        this.codCertificado = codCertificado;
    }

    public Date getChaFechvigencia() {
        return chaFechvigencia;
    }

    public void setChaFechvigencia(Date chaFechvigencia) {
        this.chaFechvigencia = chaFechvigencia;
    }

    public Date getChaFechemision() {
        return chaFechemision;
    }

    public void setChaFechemision(Date chaFechemision) {
        this.chaFechemision = chaFechemision;
    }

    public String getChaDireccion() {
        return chaDireccion;
    }

    public void setChaDireccion(String chaDireccion) {
        this.chaDireccion = chaDireccion;
    }

    public EnumEstadoCert getChaEstado() {
        return chaEstado;
    }

    public void setChaEstado(EnumEstadoCert chaEstado) {
        this.chaEstado = chaEstado;
    }

    public String getChaProyecto() {
        return chaProyecto;
    }

    public void setChaProyecto(String chaProyecto) {
        this.chaProyecto = chaProyecto;
    }

    public BigDecimal getChaCostoobra() {
        return chaCostoobra;
    }

    public void setChaCostoobra(BigDecimal chaCostoobra) {
        this.chaCostoobra = chaCostoobra;
    }

    public String getChaReferubi() {
        return chaReferubi;
    }

    public void setChaReferubi(String chaReferubi) {
        this.chaReferubi = chaReferubi;
    }

    public Integer getChaMetraje() {
        return chaMetraje;
    }

    public void setChaMetraje(Integer chaMetraje) {
        this.chaMetraje = chaMetraje;
    }

    public long getChaNumero() {
        return chaNumero;
    }

    public void setChaNumero(long chaNumero) {
        this.chaNumero = chaNumero;
    }

    public String getChaLpcppad() {
        return chaLpcppad;
    }

    public void setChaLpcppad(String chaLpcppad) {
        this.chaLpcppad = chaLpcppad;
    }

    public String getPropietario() {
        return propietario;
    }

    public void setPropietario(String propietario) {
        this.propietario = propietario;
    }

    public String getCostchfcop() {
        return costchfcop;
    }

    public void setCostchfcop(String costchfcop) {
        this.costchfcop = costchfcop;
    }

    public String getChaUrbanizacion() {
        return chaUrbanizacion;
    }

    public void setChaUrbanizacion(String chaUrbanizacion) {
        this.chaUrbanizacion = chaUrbanizacion;
    }

    public DocumentoGenerado getDocumentoGenerado() {
        return documentoGenerado;
    }

    public void setDocumentoGenerado(DocumentoGenerado documentoGenerado) {
        this.documentoGenerado = documentoGenerado;
    }

    public Solicitante getCodPropietario() {
        return codPropietario;
    }

    public void setCodPropietario(Solicitante codPropietario) {
        this.codPropietario = codPropietario;
    }

    public Distrito getCodDistrito() {
        return codDistrito;
    }

    public void setCodDistrito(Distrito codDistrito) {
        this.codDistrito = codDistrito;
    }

    public TipoMoneda getFkTmoCodigo() {
        return fkTmoCodigo;
    }

    public void setFkTmoCodigo(TipoMoneda fkTmoCodigo) {
        this.fkTmoCodigo = fkTmoCodigo;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codCertificado != null ? codCertificado.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Certificado)) {
            return false;
        }
        Certificado other = (Certificado) object;
        if ((this.codCertificado == null && other.codCertificado != null) || (this.codCertificado != null && !this.codCertificado.equals(other.codCertificado))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "org.cip.esymons.tramite.be.Certificado[codCertificado=" + codCertificado + "]";
    }

}
